#ifndef CHEMINLAB_H
#define CHEMINLAB_H

#include "mat.h"
#include "ens.h"
#include "laby.h"
#include "string.h"

/**  \file cheminlab.h
 *  \brief Resolution du labyrinthe

 *  Le fichier cheminlab contient l'algorithme de resolution du
 *  labyrinthe. L'algorithme fonctionne de la facon suivante :


 *  La methode de resolution utilisee dans la fonction ResoudreLaby (laby.c)
 *  est une variante de l'algorithme de resolution par inondation.
 *  En effet, au lieu d'incrementer chaque case parcourus a chaque iteration,
 *  on se contente de mettre dans ces cases des valeurs allants de -1 a 6.
 *  Cela permet, entre autre, d'utiliser des variables de 8 octets (char/short)
 *  au lieu de int/long.
 *  Voici la signication des valeurs utilisees :

 *  - -1 : mur
 *  - 0  : case vide (non visitee)
 *  - 1  : fleche haut
 *  - 2  : fleche droite
 *  - 3  : fleche bas
 *  - 4  : fleche gauche
 *  - 5  : case de debut
 *  - 6  : case de fin

 *  Les valeurs 1-4 sont les cases visites, et sont choisis en fonction de la
 *  case precedente, c'est a dire qu'on remplis la case voisine de façon a
 *  ce qu'elle pointe sur la case courante

 *  Exemple : Test sur la case (x,y)

 * - Test des cases environnantes
 * - Aucune case ne comporte la valeur 6
 * - Mais la case (x+1,y) est vide
 * - On place sur la case (x+1,y) la valeur 4, correspondant a "Fleche gauche"
 * - On reitegre

 * Une fois qu'on a mis une "fleche" sur la case de fin, il suffira de 
 * suivre une a une ces fleches, pour trouver necessairement le chemin 
 * le plus court entre le debut et la fin.
 */

#endif
